package com.fenghongzhang.aidl_client;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;
import android.widget.Toast;

import com.fenghongzhang.aidl_server.IMyAidlInterface;

/**
 * 1,服务端
 * 2,新建一个文件夹aidl ->需要在project结构中 main点右键
 * 3,新建aidl文件,名字随意
 * 4,IMyAidlInterface 添加需要的方法.
 * 5,锤一下.
 *
 * 6,服务端的service -> 需要清单文件添加频道.
 * 7,onBind 返回的是 IMyAidlInterface.stud .
 *
 *
 * 客户端
 * 1,新建一个文件夹aidl
 * 2.新建一个和服务端一个样的包名
 * 3,直接复制服务端的aidl文件
 * 4,锤一下.
 *
 * 5,启动服务,绑定的方式.
 * 6,intent 设置包名,然后频道.
 * 7,链接对象的binder转换 IMyAidlInterface.Stub.asInterface
 * 
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void add(View view) {
        Intent intent = new Intent();
        //找到指定的app
        intent.setPackage("com.fenghongzhang.aidl_server");
        //app下的服务的action
        intent.setAction("com.feng.jia");

        ServiceConnection serviceConnection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {

                //接口
                IMyAidlInterface iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service);
                try {
                    int add = iMyAidlInterface.add(5, 5);
                    //返回4+5的值
                    Toast.makeText(MainActivity.this, add+"", Toast.LENGTH_SHORT).show();
                } catch (RemoteException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {

            }
        };

        bindService(intent,serviceConnection,BIND_AUTO_CREATE);
    }
}
